﻿using Microsoft.Data.Edm;
using System;
namespace Microsoft.Data.OData.Query.SemanticAst
{
    /// <summary>
    /// A RangeVariable, which represents an iterator variable either over a collection, either of entities or not.
    /// Exists outside of the main SemanticAST, but hooked in via a RangeVariableReferenceNode (either Non-Entity or Entity).
    /// </summary>
    public abstract class RangeVariable : ODataAnnotatable
    {
        /// <summary>
        /// Gets the name of the associated rangeVariable.
        /// </summary>
        public abstract string Name
        {
            get;
        }
        /// <summary>
        /// Gets the type of entity referenced by this rangeVariable
        /// </summary>
        public abstract IEdmTypeReference TypeReference
        {
            get;
        }
        /// <summary>
        /// Gets the kind of this rangeVariable.
        /// </summary>
        public abstract int Kind
        {
            get;
        }
    }
}
